package com.cbg.es.service;

import com.cbg.es.dto.EsColListDTO;
import com.cbg.es.entity.EsCol;
import com.cbg.es.repository.IEsColRepository;
import com.cbg.vo.DirectionsVO;
import com.cbg.es.vo.EsColEditVO;
import com.cbg.es.vo.EsColVO;
import com.cbg.vo.StatusVO;
import com.shuyuwl.core.service.IDaoService;

import java.util.List;

/**
 * 列名备份表 service
 *
 * @author wangjuzheng
 * @since 2019-10-16
 */
public interface IEsColService extends IDaoService<EsCol, Long, IEsColRepository> {

    /**
     * 根据基础表id获取列信息
     *
     * @param tableId 表id（表id信息不存在时，获取的是全部）
     * @return 列信息
     */
    List<EsColListDTO> getEsCols(Long tableId);

    /**
     * 列的添加
     *
     * @param esColVO 列的添加模型
     */
    void addEsCOl(EsColVO esColVO);

    /**
     * 列的修改
     *
     * @param esColEditVO 列的修改模型
     */
    void updateEsCol(EsColEditVO esColEditVO);

    /**
     * 列状态的修改
     *
     * @param statusVO 列修改状态模型
     */
    void updateEsColStatus(StatusVO statusVO);

    /**
     * 列的删除
     *
     * @param ids id集合
     */
    void deleteEsCol(List<Long> ids);

    /**
     * 获取列详细信息
     *
     * @param id 列id
     * @return 详细信息
     */
    EsColListDTO getDetails(Long id);

    /**
     * 列位置的移动
     *
     * @param directionsVO 移动VO
     */
    void updateDirections(DirectionsVO directionsVO);

    /**
     * 根据表名获取列信息
     *
     * @param tableName 表名
     * @return 列信息
     */
    List<EsCol> findByTableName(String tableName);

    /**
     * 根据表名删除列信息
     *
     * @param tableName 表名
     */
    void deleteByTableName(String tableName);
}
